<?php
/**
 * 代码安全 平时需要注意点
*/

$list = [0,1,2,3];

// 例 1.in_array 宽松
$a = 'zhang';// 2php
if(in_array($a, $list)) { // 错误写法
    echo '$a 在list里';
}

//应该用 严格
if (in_array($a, $list, true)) { //正确

} else {
    echo '$a 不在list里';
}

// 例2 switch 
$i = 'php'; // 1php 同样出输出 0 1 对应的字符串

// 应添加用
if (!is_numeric($i)) {
    echo '$i 不是一个整数';
}

switch ($i) {
    case 0:
        echo "i equals 0"; 
        break;
    case 1:
        echo "i equals 1";  // $i = '1php ' 会输出 此条
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo 'i 找不到对应的值';
}

// 例 2 前端提交的数据
$postStr = '{"username": true, "passwd":true , "email":0}';

$data = json_decode($postStr, true);

//错误写法
if ($data['username'] == 'localhost') {
    echo '是可以走到这的';
}

// 正确写法1
if ($data['username'] === 'localhost') {
    echo '这次走不到这里';
}
// 正确写法2
if ((string)$data['username'] == 'localhost') {
    echo '同样也是走不到这里';
}

// 3  同理 查询数据时 把 $data['email'] 也要转化下 否则mysql 隐性转换 会把 zhangsan@126.com 等查出来。











